import config from '../config/index.js'
import store from '@/store/index.js'
import {getTokenSync} from '@/utils/auth.js'
/**
 * 无token请求
 */
const BaseRequest = (opts) => {
	let baseDefaultOpts = {
		url: config.baseUrl + opts.url,
		// 请求接口地址
		data: opts.data,
		// 传入请求参数
		method: opts.method,
		// 配置请求类型
		header: opts.method == 'get' ? {
			'X-Requested-With': 'XMLHttpRequest',
			"Accept": "application/json",
			"Content-Type": "application/json; charset=UTF-8"
		} : {
			'X-Requested-With': 'XMLHttpRequest',
			'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
		},
		// 配置请求头
		dataType: 'json',
	}
	let promise = new Promise(function(resolve, reject) {
		uni.request(baseDefaultOpts).then(
			(res) => {
				// console.log(res[1].data)
				if (res[1].data.code == 1) {
					// 后端返回的状态码1为成功状态,成功则返回请求结果,在app调试时可以通过console.log(JSON.stringify(res[1].data))来查看返回值（以项目实际情况为准）
					resolve(res[1].data)
				}
				if (res[1].data.code == 0) {
					// 后端返回状态码为0则为登录失败状态（以项目实际情况为准）
					uni.showToast({
						icon: 'none',
						title: res[1].data.msg,
						duration: 2000
					});
					// 尚未登录的逻辑处理
					return false
				}
			}
		).catch(
			(response) => {
	
				reject(response)
			}
		)
	})
	return promise
};


//带Token请求
const TokenRequest = (opts) => {
	//此token是登录成功后后台返回保存在storage中的
	let DefaultOpts = {
		url: config.baseUrl + opts.url,
		data: opts.data,
		method: opts.method,
		header: opts.method == 'get' ? {
			'authorization': "Bearer " + getTokenSync(),
			// 'X-Requested-With': 'XMLHttpRequest',
			// "Accept": "application/json",
			"accept": "*/*",
			"content-type": "application/json; charset=UTF-8"
		} : {
			'authorization': "Bearer " + getTokenSync(),
			// 'X-Requested-With': 'XMLHttpRequest',
			"accept": "*/*",
			'content-type': 'application/x-www-form-urlencoded; charset=UTF-8'
		},
		dataType: 'json',
	}
	
	
	console.log("----1--")
	let promise = new Promise(function(resolve, reject) {
		console.log("---2---")
	
		uni.showLoading({
			title:'加载中'
		})
		setTimeout(()=>{
			uni.request(DefaultOpts).then(
				(res) => {
					// console.log(res[1].data)
					if (res[1].data.code == '1' || res[1].data.code == 1) {
						console.log(res[1].data)
						uni.hideLoading()
						// 后端返回的状态码1为成功状态,成功则返回请求结果,在app调试时可以通过console.log(JSON.stringify(res[1].data))来查看返回值（以项目实际情况为准）
						resolve(res[1].data)
					}
					if (res[1].data.code == '0' || res[1].data.code == 0) {
						// 后端返回状态码为0则为错误状态（以项目实际情况为准）
						uni.showToast({
							icon: 'none',
							title: res[1].data.msg,
							duration: 2000
						});
						resolve(res[1].data)
						
						// 尚未登录的逻辑处理
						return false
					}
					if (res[1].data.code == '-1' || res[1].data.code == -1) {
						uni.hideLoading()
						// 后端返回状态码为-1则为已在登录状态（以项目实际情况为准）
						uni.showModal({
							title: '提示',
							content: res[1].data.msg,
							showCancel: false,
							confirmColor: "#3CC51F",
							success: function(res) {
								if (res.confirm) {
									store.dispatch('user/logout').then(() => {
										uni.reLaunch({
											url: ("/pages/views/Login/Login")
										})
									})
								} else if (res.cancel) {
									console.log('用户点击取消');
								}
							}
						});
						// 尚未登录的逻辑处理
						return false
					}
				}
			).catch(
				(response) => {
					uni.hideLoading()
					console.log(response)
					reject(response)
				}
			)
			
		},1000)
		
	})
	return promise
}

export default {
	BaseRequest,
	TokenRequest
}
